Advances in semi-conductor processing and logic design have permitted an increase in the amount of logic that may be present on integrated circuit devices. As a result, computer system configurations have evolved from a single or multiple integrated circuits in a system to multiple hardware threads, multiple cores, multiple devices, and/or complete systems on individual integrated circuits. Additionally, as the density of integrated circuits has grown, the power requirements for computing systems (from embedded systems to servers) have also escalated. Furthermore, software inefficiencies, and its requirements of hardware, have also caused an increase in computing device energy consumption. In fact, some studies indicate that computers consume a substantial amount of the entire electricity supply for the United States of America.
As a result, there is a vital need for energy efficiency and conservation associated with integrated circuits. And as servers, desktop computers, notebooks, ultrabooks, tablets, mobile phones, processors, embedded systems, etc. become even more prevalent (from inclusion in the typical computer, automobiles, and televisions to biotechnology), the effect of computing device sales stretches well outside the realm of energy consumption into a substantial, direct effect on economic systems. When power consumption becomes more of a factor, the trend towards always increasing performance is to be counterbalanced with power consumption concerns.
Sometimes during operation of a processor, not all of the processor is being utilized (e.g. not all available hardware threads are in operation simultaneously). In fact, current Operating System (OS) schedulers typically spread out work among available processing elements (e.g. among cores) to ensure the highest performance (i.e. each core is dedicated to working on a smaller portion of a multithreaded workload). And only when all cores are active and have work, does the OS scheduler begin to schedule more work to a core. As a result, even though a smaller number of processing elements, such as cores, may be able to accommodate a workload, all the cores remain active to ensure performance. Therefore, as can be seen, current physical processors do not include a specific mechanism to support weighing power versus performance in regards to thread scheduling.